Method and apparatus to author and manage pages of a website

ABSTRACT

Systems and methods provide a mechanism to create and maintain web pages and other types of output pages. The system and methods use an author markup language (AML) to define output pages. Additionally, a Component Markup Language (CML) may be used to define components that may be referenced by the AML. The AML and CML may be translated to an intermediate format, which may then be further processed at runtime to combine dynamic data with the intermediate format to produce the output page.

RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional PatentApplication Ser. No. 60/576,978 filed Jun. 3, 2004 and entitled “METHODAND APPARATUS TO AUTHOR AND MANAGE PAGES OF A WEBSITE” which is herebyincorporated by reference herein for all purposes.

FIELD

The embodiments relate generally to web page creation and moreparticularly to systems and methods for authoring web pages according toa predefined schema

LIMITED COPYRIGHT WAIVER

A portion of the disclosure of this patent document contains material towhich the claim of copyright protection is made. The copyright owner hasno objection to the facsimile reproduction by any person of the patentdocument or the patent disclosure, as it appears in the U.S. Patent andTrademark Office file or records, but reserves all other rightswhatsoever.

BACKGROUND

Since its inception, the World-Wide Web (“Web”) has continuously grownto include literally billions of pages of information. Web pagestypically comprise HTML (HyperText Markup Language) text with tagsindicating how the text is to be displayed on a computer screen,typically through a web browser such as Internet Explorer, NetscapeNavigator, or Mozilla Firefox.

The process of authoring HTML can be cumbersome, with a typical documentrequiring many tags in order to specify the desired output.Additionally, there are typically many tags to choose from. Further,errors in formatting the HTML can be hard to detect, because there istypically no validation performed for HTML.

XML (eXtensible Markup Language) and XSL (eXtensible Style Language)have been used to assist in defining web pages. However, it is stilldifficult to validate XML and XSL files without actually attempting torender the XML and XSL on a display screen. As a result, problems withHTML, XML and XSL are typically found later in the design process ratherthan earlier when it may be easier and more economical to fix them.

Additionally, an entity may desire to maintain a consistent look andfeel across a set of many web pages, while also requiring the ability toinsert dynamic content, that is, content that may change from onerequest for a page to the next request for the same page. For example, acompany may desire to provide a consistent set of graphics (e.g. acompany logo) across a set of the company's web pages. Each of thecompany's web pages typically must contain code to display the set ofgraphics. Later, if the company desires to change the look and feel ofthe web site, many pages will typically need to be edited to reflect thechange.

SUMMARY

The various shortcomings, disadvantages and problems above are addressedby the present invention, which will be understood by reading andstudying the following specification.

Systems and methods provide a mechanism to create and maintain web pagesand other types of output pages. The system and methods use an authormarkup language (AML) to define output pages. Additionally, a ComponentMarkup Language (CML) may be used to define components that may bereferenced by the AML. The AML and CML may be translated to anintermediate format, which may then be further processed at runtime tocombine dynamic data with the intermediate format to produce the outputpage.

A further aspect of the systems and methods includes providing a markuplanguage to define how text in AML and CML files may be translated.

A still further aspect of the systems and methods includes providing amarkup language to define how dynamic data may be included in AML andCML files.

The present invention describes systems, methods, and computer-readablemedia of varying scope. In addition to the aspects and advantages of thepresent invention described in this summary, further aspects andadvantages of the invention will become apparent by reference to thedrawings and by reading the detailed description that follows.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A-1D are block diagrams of logical components of systemsaccording to example embodiments.

FIG. 2 is a block diagram further illustrating runtime system componentsaccording to an example embodiment.

FIG. 3 is a flowchart illustrating methods according to exampleembodiments of the invention.

FIG. 4 is a diagram illustrating an example output page generated usingembodiments of the invention.

FIG. 5 is a block diagram illustrating components of a computing devicethat may execute systems and methods according to embodiments of theinvention.

DETAILED DESCRIPTION

In the following detailed description of exemplary embodiments of theinvention, reference is made to the accompanying drawings which form apart hereof, and in which is shown by way of illustration specificexemplary embodiments in which the invention may be practiced. Theseembodiments are described in sufficient detail to enable those skilledin the art to practice the invention, and it is to be understood thatother embodiments may be utilized and that logical, mechanical,electrical and other changes may be made without departing from thescope of the present invention.

Some portions of the detailed descriptions which follow are presented interms of algorithms and symbolic representations of operations on databits within a computer memory. These algorithmic descriptions andrepresentations are the ways used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of steps leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared, and otherwise manipulated. It hasproven convenient at times, principally for reasons of common usage, torefer to these signals as bits, values, elements, symbols, characters,terms, numbers, or the like. It should be borne in mind, however, thatall of these and similar terms are to be associated with the appropriatephysical quantities and are merely convenient labels applied to thesequantities. Unless specifically stated otherwise as apparent from thefollowing discussions, terms such as “processing” or “computing” or“calculating” or “determining” or “displaying” or the like, refer to theaction and processes of a computer system, or similar computing device,that manipulates and transforms data represented as physical (e.g.,electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission or display devices.

In the Figures, the same reference number is used throughout to refer toan identical component which appears in multiple Figures. Signals andconnections may be referred to by the same reference number or label,and the actual meaning will be clear from its use in the context of thedescription.

The description of the various embodiments is to be construed asexemplary only and does not describe every possible instance of theinvention. Numerous alternatives could be implemented, usingcombinations of current or future technologies, which would still fallwithin the scope of the claims. The following detailed description is,therefore, not to be taken in a limiting sense, and the scope of thepresent invention is defined only by the appended claims.

FIG. 1A is a block diagram illustrating logical components of a system100 according to an example embodiment. In some embodiments, system 100includes a markup language editor 102, a markup translator 108, a secondtranslator 114, and a third translator 120.

Editor 102 comprises an editor that provides a user interface forreading, creating, updating and saving page markup language data 104. Insome embodiments, editor 102 comprises the xmlspy editor, available fromAltova, Inc. of Beverly, Mass. It is desirable in some embodiments tosave files created by the editor in UTF-8 format. In general, pageauthors use the editor to create or edit author markup language (AML)and or a page markup language (PML) data that defines the contents ofpages 104. In addition, a page designer may use the editor to browse foravailable components and validate the page document based on an authorschema that defines the correct vocabulary for AML. Editor 102 may beused to validate the AML data according to a schema defining the AMLvocabulary and grammar. In some embodiments, the AML schema is definedusing XML. In some embodiments, PML may be used for sections of pagesthat are “one-offs” and do not refer to reusable components definedusing CML 106.

Pages 104 comprise data that may be translated one or more times anddisplayed as output pages 122 on various types of devices such ascomputer systems running web browsers, email clients or otherapplications that display page output. Further, the pages 104 may bedisplayed on devices such as cell phones and PDAs. As noted above, insome embodiments, a page 104 is defined using AML or PML. AML in someembodiments is a superset of PML, and uses PML elements to define pages.In some embodiments, AML may also make references or calls tocomponents, which are further described below. Further, AML in someembodiments provide control structures such as iteration (looping) andconditional execution that may not be available in the underlying PML.Additionally, in some embodiments, AML includes inline documentationthat may be used to aid a user in designing a page 104 using AML.

Component markup language 106 defines the contents of components thatmay be used or referenced by an author when designing a page 104.Components may comprise pre-defined layouts that may be used on multiplepages in order to provide for consistency in page design and in order toreduce page design time by eliminating the need for each page designerto provide code for components that are used more than once.Additionally the use of components allows changes to be made across alarge number of pages that refer to the component by making a change tothe component itself, thereby potentially reducing the need to editmultiple AML pages 104.

A component may be referred to by its component name, and may include aset of zero or more parameters that determine the behavior of thecomponent. In addition, a component may include a description of thefunctionality or behavior of the component in order to aid designer inusing the component. Components designed using CML may call othercomponents. Additionally, components may be hierarchical, i.e. acomponent may derive attributes and methods from a base component. LikeAML, CML may be built upon PML. In some embodiments, an XML schema maybe used to define the CML vocabulary and grammar.

Like AML, CML may also be validated. In some embodiments, thisvalidation includes checking the vocabulary of the CML used to define acomponent and to determine that the component is “well formed”, that is,does the component comply with the syntax defined by the schema.

As noted above, both AML and CML may use PML as a building block for therespective markup language. In some embodiments, PML provides controlelements such as iteration and conditional logic. In some embodiments,PML may be defined using an XML schema In these embodiments, PMLincludes a subset of HTML rendering tags and text tags that may besupported for translation purposes. For example, in some embodiments,text that is translatable text has a unique attribute ‘strId’. Inaddition, some embodiments may map certain PML attributes to HTMLattributes. For example, PML attributes styleId and styleName correspondto HTML attributes id and class, respectively. Additionally, PMLattributes styleId and styleName correspond to HTML attributes id andclass, respectively.

PML portions of the AML and CML languages may be validated using the PMLschema.

Table 1 below provides a list of PML elements that may be used to defineAML and CML constructs: TABLE 1 PML Element Description Example <Text>Any mixed, <Text strId=“robot-107471-1048692487130”> containing HTML <Fragment>Subscriptions &amp;</Fragment> text translatable into <LineBreak/> other languages.  <Fragment>Recurring Payments</Fragment>Usually occurs  <Style styleName=“xptMyStyle”> within <l10n:text>  <Fragment>Subscriptions &amp;</Fragment> tags in MAXCODE  </Style>templates. <Text> </Text> elements are NOT allowed inside of <Text>, as<Fragment> elements should be used. This is to have one strId for thewhole <Text> <Anchor>, <Anchor>, <Image>, <Result>, <Style>, <Fragment>are allowed within. <Fragment> Occurs only within <TextstrId=“robot-107471-1048692487130”> <Text>. Represents <Fragment>Subscriptions &amp;</Fragment> fragments of the  <LineBreak/>text, mixed with  <Fragment>Recurring Payments</Fragment> HTML tags.</Text> <Style> Occurs only within <TextstrId=“robot-107471-1048692487130”> <Text>. Used for <Fragment>Subscriptions &amp;</Fragment> nested styles of text. <LineBreak/> Attribute styleName  <Style styleName=“xptMyStyle”>represents class.   <Fragment>Recurring Payments</Fragment>   <StylestyleName=“xptNestedStyle”>    <Fragment>Recurring Payments</Fragment>  </Style>   <Fragment>Subscriptions &amp;</Fragment>  </Style> </Text><Const> Any plain text non-<Const>/i/btn/x-click-butcc-subscribe.gif</Const> translatable intoother languages. Used to enclose image sources, links, etc. <Paragraph>Any paragraph, <Paragraph> containing text,  <TextstrId=“robot-1234”>Message is:</Text> mixed text, <Result>OperationStatus/Message</Result> dynamic data, line</Paragraph> breaks. <PreFormat> Any pre formatted <PreFormat> display. <Result>OperationStatus/Message</Result> </PreFormat> <Boolean> Used topass <Boolean>true</Boolean> true/false values as parameter values tocomponents. <Result> References to<Result>OperationStatus/Message</Result> dynamic data, coming fromPayPayResultDoc. <Image> Image rerefences. <Image hspace=“0”vspace=“10”> Standard attributes  <Source> of HTML <img>  <Const>/i/btn/x-click-butcc.gif</Const> are allowed (border, </Source> vspace, width,   <Alt> height, etc.), except    <TextstrId=“robot-107471-1048692487030”>Go for src, alt, and To MyAccount</Text> class. <Source>  </Alt> represents src, </Image> <Alt> -alt, styleName attribute - class. <ImagePixel> Pixel image, <ImagePixelwidth=“50”/> frequently used on the current pages. Attributes border=“0”alt=“” are hard-coded to be such. <Anchor> Anchor references. <Anchor>Attribute href is  <Link linkType=“paypal”> represented by  <Const>_merchant</Const> <Link> element.  </Link> Only the CGI   <TextstrId=“robot-1234”>PayPal Button parameters after the Factory</Text>“...cgi- </Anchor> bin/webscr?cmd=” need to be inside of <Link><Const>.See the Pml.xsd for the description of possible linkType values andtheir meaning. <AnchoredResult> Adds anchors to the <AnchoredResult>specified dynamic  <Result>CustomerServiceDetails/Memo</Result>ResultDoc element. </AnchoredResult> <LinkedButton> Button linking to<LinkedButton> some URL when  <Link linkType=“paypal”> clicked on.  <Const>_account</Const>  </Link>  <Name>   <Const>Go To MyAccount</Const>  </Name>  <Value>   <TextstrId=“CEdit-hdoan-1071263553590”>Go To My Account</Text>  </Value></LinkedButton> <List> Bulleted list of text <List> items.  <Item>  <Text strId=“clickthru-keep_payments_free- 007”>Both the buyer and theseller must reside in the UK</Text>  </Item>  <Item>   <TextstrId=“clickthru-keep_payments_free- 008”>The purchase price must be inPounds Sterling</Text>  </Item>  <Item>   <TextstrId=“clickthru-keep_payments_free-010”>    <Fragment>The seller mustnot charge you more than the fees they are charged by PayPal. (Thesefees are at most </Fragment>    <Fragment> on transactions within theUK)</Fragment>   </Text>  </Item> </List> <LineBreak> Line break.<LineBreak/> <Choose> Conditionals based <Choose> on dynamic values <Choice when=“UserProperties/FlagLoggedIn and coming fromPageProcessingInfo/Country = ‘US’”> ResultDoc.   <TextstrId=“robot-0001”>You are from the United States.</Text>  </Choice> <Choice when=“UserProperties/FlagLoggedIn andPageProcessingInfo/Country = ‘DE’”>   <Text strId=“robot-0002”>You arefrom Germany.</Text>;  </Choice>;  <Otherwise>;   <TextstrId=“robot-0003”>You are a citizen of the world.</Text>; </Otherwise>; <Choose> <Table> Represents an <Table cellspacing=“3”>HTML table. Most  <TableRow> of the attributes of   <TableCellalign=“center”> <table> (width,   ... cellpadding,   </TableCell>cellspacing, etc.),  </TableRow> except for class. </Table> AttributestyleName represents class. <TableRow> Represents an <TableRow> HTMLtable row.  <TableCell align=“center”> Most of the  ... attributes of<table>  </TableCell> (valign, </TableRow> background, bgcolor, etc.),except for class. Attribute styleName represents class. <TableCell>Represents an <TableCell align=“center”> HTML table cell.  <Imagehspace=“0” vspace=“10”> Most of the  ... attributes of <table>  </Image>(width, valign, </TableCell> rowspan, etc.), except for class. AttributestyleName represents class. <Container> Represents an <ContainerstyleId=“xptMessageBox”> HTML <div>.  <Table align=“center”> AttributestyleId  ... represents id,  </Table> styleName - class. </Container><SeparationLine> Represents a <SeparationLine styleName=“medium”/>horizontal rule. <Money> Formats a money <Moneycurrency=“GBP”>20</Money> amount with given currency for a given locale.<NumberPercent> Formats a <NumberPercent>10</NumberPercent> percentagenumber for a given locale. <Form> Represents a form <Form> on a page. <FormAction>...</FormAction>  <FormBody><InputSubmit><InputButton> </FormBody> </Form> <InputText> Input text.<InputText><Name><Value></InputText> <InputTextArea> Input text area.<InputTextArea><Name><Value></InputTextArea> <InputHidden> Input hidden.<InputHidden><Name><Value></InputHidden> <InputPassword> Input password.<InputPassword><Name><Value></InputPassword> <InputButton> Input button.<InputButton><Name><Value></InputButton> <InputLabel> Input text.<InputLabel><Label></InputLabel> <InputSubmit> Input text.<InputSubmit><Name><Value></InputSubmit> <InputCheckbox> Input checkbox.<InputCheckbox><Name><Value></InputCheckbox > <InputRadio> Input radio.<InputRadio><Name><Value></InputRadio> <InputSelect> Input select.<InputSelect><Name><OptionList></InputSelect> <InputOption> Inputoption. <InputOption><Name><Value></InputOption> <InputImage> Inputimage. <InputImage><Name><Value></InputImage>

Translator 110 reads AML pages 104 and CML 106 to produce intermediateoutput PML 110. In some embodiments, translator 110 comprises softwarethat replaces component calls with the instances of the components. Inaddition, translator 110 may also set the parameters using values fromcomponent callers. The resulting intermediate output PML 110 file is aPML document that does not have any component references.

Translator 114 reads intermediate output PML 110 to produce page XSL116. In some embodiments, translator 114 reads a set of one or more XSLfiles in PML transform library 112 that transforms intermediate outputPML 110 into HTML and XSL equivalent in page XSL 116. For example,elements for markup of content can be transformed into HTML, whileprogramming constructs such as conditionals and iterations can be mappedto XSL elements. In some embodiments, the XSL script in page XSL 116 mayinclude XSL code that processes dynamic data. In some embodiments, pageXSL 116 may be deployed to a server to be used at runtime.

Translator 120 reads page XSL 116 and results doc 118 to produce outputpage 122. In some embodiments, results doc 118 comprises dynamiccontent. Dynamic content includes content that cannot be defined atbuild time, rather it is provided at run-time. Examples of such dynamiccontent include personalization data (e.g. name, address, demographicdata etc.) regarding a page requestor, account balances, and other datathat either differs from user to user or changes over time. The dynamiccontent may include parameters upon which components CML 106 and AMLpages 104 use as a basis for dynamic logic defined in the AML or CML.

In some embodiments, output page 122 may be HTML that may be displayedon a web browser or in an HTML compatible electronic mail message. Inalternative embodiments, translator 120 may produce an output page in aformat that may be displayed on a PDA, cell phone or other device. Theembodiments of the invention are not limited to a particular format foroutput page 122.

FIG. 1B is a block diagram illustrating logical components of a system140 according to a further example embodiment. In general, system 140includes the components of system 100 described above. In addition,system 140 includes one or more localization processes 124 that may beused to translate AML 104 and CML 106 to localized AML 128 and localizedCML 130 respectively. The localized files comprise files in which one ormore text strings in the source AML 104 and CML 106 have been translatedfrom a source language into a differing target language used in aparticular locality. For example, English text may be translated intoGerman text for a user in Germany, and Spanish text for a user in Spain.The localized versions of AML 104 and CML 106 are then processed asdescribed above. In some embodiments, localization process 124 is ascript that extracts translatable text from the authored AML 104 and CML106, and inserts the translated text into localized versions of AML 128and CML 130.

In some embodiments, an SML (String Markup Language) file 126 is used tocontrol how translations are accomplished. The SML file may contain therules and tags that define which text is translated and which text isnot. In some embodiments, the SML file conforms to an XML schema In someembodiments, an SML file 126 exists for each AML 104 or CML 106 file. Inalternative embodiments, a single SML file 126 may be applied to one ormore AML or CML files.

FIG. 1C is a block diagram illustrating logical components of a system150 according to a still further example embodiment. In general, system150 includes the components of system 100 described above. In addition,system 150 includes an XP controller process that reads results 136 andRML 134 to produce result doc 118. Results 136 comprises raw (i.e.unformatted) data that is returned as a result of a user request. RML134 comprises a schema that determines how results 136 may be translatedinto a results doc 118. In some embodiments, RML 134 conforms to an XMLschema

FIG. 1D is a block diagram illustrating logical components of a system160 according to a yet further example embodiment. In general, system160 includes the components of system 100 described above. In addition,system 160 includes dynamic content PML 162 and dynamic PML transformlibrary 164. Dynamic content PML 162 comprises data that may be authoredsimilar to AML data 104. Dynamic content PML 162 typically containscontent that may change over time, but not as rapidly as content inresult doc 118. For example, dynamic content PML may comprise a useragreement for use of a web site. Such user agreements may vary fromcountry to country, and in addition the terms of the user agreement maychange over time, necessitating a change in the dynamic PML content 162.Such changes can be made without retranslating AML data 104 that may usedirectives to include dynamic PML content 162 in later transformations.

In some embodiments, dynamic PML transform library 164 comprises a setof one or more XSL files that may be read by translator 120 totransforms dynamic content PML 162 along with page XSL 116 to outputpage 122. In some embodiments, dynamic PML transform library 164 is asubset of PML transform library 112.

It should be noted that various embodiments may include variouscombinations of some or all of the elements described above in FIGS.1A-1D.

FIG. 2 is a block diagram illustrating further runtime system 200components according to an example embodiment. In some embodimentssystem 200 includes database 202, data access layer 104, business logic206, UI controller 208, XP controller 132, web server 212 and web client214. Database 202 may be used to store dynamic content 202. For example,database 202 may store user data, including name, demographic data,account data, financial data, and other data that is either associatedwith an account or user, and/or data that may change over time. Dataaccess layer 204 provides an interface to database 202. The data accesslayer may be provided as part of a database management system, or it maybe an standardized data access layer such as ODBC.

Business logic 206 comprises software that may be used to performfunctions such as updating account information, moving funds from oneaccount to another, or paying funds from an account to a payee.

UI controller 208 serves as an entry point for a page request receivedfrom a web browser 214 through web server 212. UI controller 208executes business logic functions 206, and in some embodiments calls XPcontroller 132, which coordinates the construction of dynamic results136 and results document 118. XSL engine 120 may then read the resultsdocument 118 and page XSL file 116 to produce the output page 122. Asnoted above, output page 122 may be an HTML formatted file, which isthen passed to the web server 212 to relay to the requesting web browser214.

In some embodiments, web server 212 is the Apache web server. However,the embodiments of the invention are not limited to any particular webserver, and those of skill in the art will appreciate that any suitableweb server may be used.

In some embodiments, system 200 may include one or more batch emailprograms 210, an email server 216, and email clients 218. In theseembodiments, dynamic content read by XP controller 132 may create outputthat may be used by a batch email program to generate emails withdynamic content in the same manner that dynamic content may be generatedfor web server 212. The emails containing the dynamic content may beprocessed by an email server 216 for reading by email clients 218. Asnoted above, output page 122 may be an HTML formatted file, which may beinserted into or formatted as an electronic mail message for processingby email server 216.

In some embodiments, email server 216 comprises the qmail email server.Those of skill in the art will appreciate that any suitable email servermay be substituted for the qmail server.

In the discussion above, web servers and email servers receive output ofauthored AML data 104 that may include dynamic content. Those of skillin the art will appreciate that other applications and servers could beadapted to use the systems and methods described herein to includeauthored AML data 104 and dynamic content.

FIG. 3 is a flowchart illustrating methods for authoring and managingweb pages according to embodiments of the invention. The methods to beperformed by the operating environment constitute computer programs madeup of computer-executable instructions. Describing the methods byreference to a flowchart enables one skilled in the art to develop suchprograms including such instructions to carry out the method on suitableprocessors for gaming machines (the processor or processors of thecomputer executing the instructions from computer-readable media). Themethods illustrated in FIG. 3 are inclusive of acts that may be taken byan operating environment executing an exemplary embodiment of theinvention.

The method begins by reading a page markup language file (block 302).Typically the page markup language file will be authored and conform toan author markup language. As noted above, the AML/PML file may includereferences to one or more components.

Next, the system reads component markup language data (block 304).Typically the component markup language data will conform to a componentmarkup language.

The system then translates the page markup language data and thecomponent markup language data into an intermediate output, referred toas first output page markup language data (block 306). In someembodiments, the translation replaces references to components withinstances of the component (e.g. the PML for the component) and processany parameters associated with the component.

Next, the system translates the intermediate output to page XSL data(block 308). In some embodiments, an XSL translator may be used toperform all or part of the translation. In some embodiments, the pageXSL data may be deployed, that is, made available for general use aspart of a web or other type of service.

Next, the system reads dynamic content and translates the page XSL data,along with the dynamic content into an output page (block 310). In someembodiments, the dynamic content may comprise a results doc that isformed by translating raw data according to an RML (Results MarkupLanguage) specification. The output page may be formatted in variousways in varying embodiments. For example, the output page may be an HTMLpage for a web browser, an email message for an email server/client, orother output page for a device such as a PDA, cell phone.

It should be noted that the various AML, PML, CML and RML files may bevalidated (block 320) at various points in the above process. As notedabove, AML may be validated while editing, or at various points beforeor after the translations discussed above. In addition, references inAML files to components defined in CML files, or results defined in RMLfiles may be validated to insure that the AML data refers to validcomponents and results.

Additionally, validation may take place independently of the abovedescribed process. For example, a separate validation tool thatvalidates various combinations of AML, PML, CML and RML may be appliedat any time by an AML author. Further, the validation tool may beapplied when the AML, PML, CML or RML is submitted to a code repository.

It should be noted that inventive concepts may exist in subsets of theactions discussed above with reference to FIG. 3, and various embodimentof the invention may include various combinations of actions illustratedin FIG. 3.

FIG. 4 is a diagram illustrating an example output page 400 generatedusing embodiments of the invention. Page 400 includes content that isdesirable to reuse from page to page. For example, data 402 indicatingthe site owner and separator bar may be reused from page to page. Markuplanguage defining data 402 is thus suitable for implementation as acomponent. Other content on the page may not be suitable for reuse, andis thus more suitable for definition using AML as described above.

The following is sample AML code may be used to produce page 300: <?xmlversion=“1.0” encoding=“UTF-8”?> <c:Aml language=“en_US” master=“en_US”xmlns:d=“http://www.paypal.com/Dml” xmlns:c=“http://www.paypal.com/Aml”xmlns=“http://www.paypal.com/Pml”xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation=“http://www.paypal.com/Aml../../../schemas/core/aml/Aml.xsd” masterVersion=“$Id:MultipleCurrencyWA.aml,v 1.5 2004/08/23 01:01:42 ywu Exp $”> <c:LayoutClickthrough>   <c:wpHeader>     <c:wpHideLoginLinks>     <Boolean>true</Boolean>     </c:wpHideLoginLinks>   <c:wpTabsJustBlueBar>     <Boolean>true</Boolean>   </c:wpTabsJustBlueBar>   </c:wpHeader>   <c:wpStandardPageTitle>    <Text strId=“robot-107471-1048692486990”><Fragment>MultipleCurrencies with PayPal's Website Payment Tools </Fragment></Text>  </c:wpStandardPageTitle>   <c:wpStandardContentTitle>   <c:wpContentTitle>     <TextstrId=“psrivastava-9736-1096418270-59729- 1”><Fragment>MultipleCurrencies with PayPal's Website Payment Tools </Fragment></Text>   </c:wpContentTitle>   </c:wpStandardContentTitle>  <c:wpContentAreaFreeForm>    <c:wpContent>     <Paragraph>      <TextstrId=“robot-107471-1048692487080”>       <Fragment>Did you know thatPayPal offers support for Multiple Currencies with our Website Paymenttools? Use PayPal's Website Payment tools to collect payments in:</Fragment>       <c:TextUnit>        <c:wpName>        <Const>currencies_plural</Const>        </c:wpName>      </c:TextUnit>    <Fragment>Example Website Payment toolsinclude:</Fragment>   </Text>  </Paragraph>  <Table cellspacing=“3”>  <TableRow>    <TableCell align=“center”>     <Image hspace=“0”vspace=“10”>      <Source>       <Const>/i/btn/x-click-butcc.gif</Const>     </Source>      <Alt>       <Text strId=“robot-107471-1048692487030”><Fragment>Go To My Account</Fragment></Text>      </Alt>    </Image>    </TableCell>    <TableCell styleName=“smallEmphasis”>    <Text strId=“robot-107471- 1048692487090”><Fragment>Buy NowButtons</Fragment></Text>    </TableCell>    <TableCell>     <ImagePixelwidth=“50”/>    </TableCell>    <TableCell align=“center”>     <Imagehspace=“0”>      <Source>       <Const>/i/btn/x-click-but11.gif</Const>     </Source>      <Alt>       <Text strId=“robot-107471-1048692487040”><Fragment>PayPal Donate button</Fragment></Text>     </Alt>     </Image>    </TableCell>    <TableCellstyleName=“smallEmphasis”>     <Text strId=“robot-107471-1048692487100”><Fragment>Donations</Fragment></Text>    </TableCell>  </TableRow>   <TableRow>    <TableCell align=“center”>     <Imagehspace=“0” vspace=“10”>      <Source>      <Const>/i/btn/sc-but-01.gif</Const>      </Source>      <Alt>      <Text strId=“robot-107471- 1048692487050”><Fragment>PayPal Add toCart button</Fragment></Text>      </Alt>     </Image>    </TableCell>   <TableCell styleName=“smallEmphasis”>     <Text.strId=“robot-107471-1048692487120”><Fragment>PayPal Shopping Cart</Fragment></Text>   </TableCell>    <TableCell>     <ImagePixel width=“50”/>   </TableCell>    <TableCell align=“center”>     <Image hspace=“0”>     <Source>       <Const>/i/btn/x-click-butcc-subscribe.gif</Const>     </Source>      <Alt>       <Text strId=“robot-107471-1048692487060”><Fragment>PayPal Subscriptions and Recurring Paymentsbutton</Fragment></Text>      </Alt>     </Image>    </TableCell>   <TableCell styleName=“smallEmphasis”>     <TextstrId=“robot-107471-1048692487130”>      <Fragment>Subscriptions&amp;</Fragment>      <LineBreak/>      <Fragment>RecurringPayments</Fragment>     </Text>    </TableCell>   </TableRow>  </Table> <Paragraph>   <Text strId=“robot-107471-1048692487150”><Fragment>Updateyour buttons if you would like to be paid in these currencies (yourbuyers won't need to hold the currency in their PayPal account to payyou):</Fragment></Text>  </Paragraph>  <Table cellspacing=“5” align=“”>  <TableRow>    <TableCell styleName=“emphasis”>     <TextstrId=“robot-107471-1048692487170”><Fragment>&quot;CAD&quot;</Fragment></Text>   </TableCell>    <TableCell>     <Text strId=“robot-107471-1048692487180”><Fragment>Canadian Dollars (C&#36;)</Fragment></Text>   </TableCell>   </TableRow>   <TableRow>    <TableCellstyleName=“emphasis”>     <Text strId=“robot-107471-1048692487190”><Fragment>&quot;EUR&quot;</Fragment></Text>   </TableCell>    <TableCell>     <Text strId=“robot-107471-1048692487200”><Fragment>Euros (&#8364;)</Fragment></Text>   </TableCell>   </TableRow>   <TableRow>    <TableCellstyleName=“emphasis”>     <Text strId=“robot-107471-1048692487210”><Fragment>&quot;GBP&quot;</Fragment></Text>   </TableCell>    <TableCell>     <Text strId=“robot-107471-1048692487220”><Fragment>Pounds Sterling (&#163;)</Fragment></Text>   </TableCell>   </TableRow>   <TableRow>    <TableCellstyleName=“emphasis”>     <Text strId=“robot-107471-1048692487230”><Fragment>&quot;JPY&quot;</Fragment></Text>   </TableCell>    <TableCell>     <Text strId=“robot-107471-1048692487240”><Fragment>Yen (&#165;)</Fragment></Text>    </TableCell>  </TableRow>   <TableRow>    <TableCell styleName=“emphasis”>     <TextstrId=“robot-107471-1048692487250”><Fragment>&quot;USD&quot;</Fragment></Text>   </TableCell>    <TableCell>     <Text strId=“robot-107471-1048692487260”><Fragment>U.S. Dollars(&#36;)</Fragment></Text>   </TableCell>   </TableRow>  </Table>  <Paragraph>   <TextstrId=“CEdit-107471-1048692399981”>    <Fragment>If you want to continueto receive your payments in U.S. Dollars, you do not need to change orupdate your Payment Button HTML Code.</Fragment>    <LineBreak/>   <LineBreak/>    <Fragment>To find out more about updating yourWebsite Payment Buttons for Multiple Currencies, click </Fragment>   <Fragment styleName=“emphasis”>Learn More</Fragment>   <Fragment>below. To create new buttons, go to the </Fragment>   <Anchor>        <Link linkType=“paypal”>        <Const>_merchant</Const>        </Link>        <Fragment>PayPalButton Factory</Fragment>       </Anchor>       <Fragment>.</Fragment>     </Text>      <LineBreak/>      <LineBreak styleName=“h5”/>    </Paragraph>    </c:wpContent>   </c:wpContentAreaFreeForm>  <c:wpFooter>    <c:wlpButtonList>     <c:FormButton>      <c:wpURL>      <Const>p/sell/mc/mc_intro</Const>      </c:wpURL>      <c:wpName>      <Const>Learn More</Const>      </c:wpName>      <c:wpValue>      <Text strId=“robot-107471- 1048692487020”><Fragment>LearnMore</Fragment></Text>      </c:wpValue>     </c:FormButton>   </c:wlpButtonList>   </c:wpFooter>  </c:LayoutClickthrough> </c:Aml>

The above AML document will finally be converted into the followingexcerpted XSL script that outputs XHTML with some XSL code that dealswith any dynamic data present: <?xml version=“1.0”?> <xsl:stylesheetxmlns:xsl=“http://www.w3.org/1999/XSL/Transform” version=“1.1”><xsl:template match=“/WebsiteResultDoc”> <html>  <head>  <title>Website - Multiple Currencies with Website's Website PaymentTools </title>   <xsl:comment>&amp;#13;&#10; Script info: script:webscr, cmd: <xsl:value-of select=“PageProcessingInfo/Command”/>,template: <xsl:value- of select=“PageProcessingInfo/Template”/>, date:<xsl:value-of select=“PageProcessingInfo/Date”/>; country: <xsl:value-of select=“PageProcessingInfo/Country”/>, language: <xsl:value-ofselect=“PageProcessingInfo/Language”/>&amp,#13;&amp;#10; web version:<xsl: value-of select=“PageProcessingInfo/WebVersion”/> branch:<xsl:value- of select=“PageProcessingInfo/WebBranch”/>&amp;#13;&amp;#10; content version: <xsl:value-ofselect=“PageProcessingInfo/ContentVersion”/>&amp,#13;&amp; #10; pmlFile:pmlFile: &amp;#13;&amp;#10; xslFile: pmlFile&amp;#13;&amp;#10;</xsl:comment>   <meta><xsl:attribute name=“http-equiv”>DESCRIPTION</xsl:attribute><xsl:attribute name=“content”>Websitelets you send money to anyone with email. Website is free for consumersand works seamlessly with your existing credit card and checkingaccount. You can settle debts, borrow cash, divide bills or splitexpenses with friends all without going to an ATM or looking for yourcheckbook.</xsl:attribute></meta>   <meta><xsl:attribute name=“http-equiv”>KEYWORDS</xsl:attribute><xsl:attribute name=“content”>Send,money, payments, credit, credit card, instant, money, financialservices, mobile, wireless, WAP, cell phones, two-way pagers, WindowsCE</xsl:attribute></meta>   <link href=“/css/pp_styles_111402.css”rel=“stylesheet” type=“text/css”/>   <linkhref=”/css/pp_table_styles.css” rel=“stylesheet” type=“text/css”/>  <link href=“/en_US/i/icon/pp_favicon_x.ico” rel=“shortcut icon”/> </head>  <body>   <xsl:choose>    <xsl:whentest=“PageProperties/SiteCatalystGlobalTag”>     <img border=“0”height=“1” width“1”><xsl:attributename=“src”>https://102.112.2O7.net/b/ss/<xsl:value-of select=“PageProperties/SiteCatalystGlobalTag”/>/1/G.4--NS/0?pageName=Multiple Currencies with Website's Website Payment Tools::<xsl:value-of select=“PageProcessingInfo/Template”/>::<xsl:value-ofselect=“PageProcessingInfo/Command”/>&amp;amp;c6=<xsl:value -ofselect=“UserProperties/AccountNumberExternal”/></XSL:attribute ></img>   .....    </xsl:when>   </xsl:choose>   <table class=“main”align=“center” border=“0” cellpadding“0” cellspacing=“0”>    ......  </table>   .....  </body> </html> </xsl:template> </xsl:stylesheet>

FIG. 5 is a block diagram illustrating major components of a computersystem 500 within which a set of instructions, for causing the machineto perform any one or more of the methodologies discussed herein, may beexecuted. In alternative embodiments, the machines operate as astandalone device or may be connected (e.g., networked) to othermachines. In a networked deployment, the machine may operate in thecapacity of a server or a client machine in server-client networkenvironment, or as a peer machine in a peer-to-peer (or distributed)network environment. The machine may be a personal computer (PC), atablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), acellular telephone, a web appliance, a network router, switch or bridge,or any machine capable of executing a set of instructions (sequential orotherwise) that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include any collection of machines that individually orjointly execute a set (or multiple sets) of instructions to perform anyone or more of the methodologies discussed herein.

The exemplary computer system 500 includes a processor 502 (e.g., acentral processing unit (CPU) a graphics processing unit (GPU) or both),a main memory 504 and a static memory 506, which communicate with eachother via a bus 508. The computer system 500 may further include a videodisplay unit 510 (e.g., a liquid crystal display (LCD) or a cathode raytube (CRT)). The computer system 500 also includes an alphanumeric inputdevice 512 (e.g., a keyboard), a cursor control device 514 (e.g., amouse), a disk drive unit 516, a signal generation device 518 (e.g., aspeaker) and a network interface device 520.

The disk drive unit 516 includes a machine-readable medium 522 on whichis stored one or more sets of instructions (e.g., software 524)embodying any one or more of the methodologies or functions describedherein. The software 524 may also reside, completely or at leastpartially, within the main memory 504 and/or within the processor 502during execution thereof by the computer system 500, the main memory 504and the processor 502 also constituting machine-readable media

The software 524 may further be transmitted or received over a network526 via the network interface device 520. The network 526 may be anytype of wired or wireless network and the network interface 520 may varybased on the type of network. In some embodiments, the network comprisesa LAN (local area network). In alternative embodiments, the network maybe a wide area network a corporate network, or an intranet linkingmultiple networks. In further alternative embodiments, the network maycomprise the Internet.

While the machine-readable medium 522 is shown in an exemplaryembodiment to be a single medium, the term “machine-readable medium”should be taken to include a single medium or multiple media (e.g., acentralized or distributed database, and/or associated caches andservers) that store the one or more sets of instructions. The term“machine-readable medium” shall also be taken to include any medium thatis capable of storing, encoding or carrying a set of instructions forexecution by the machine and that cause the machine to perform any oneor more of the methodologies of the present invention. The term“machine-readable medium” shall accordingly be taken to included, butnot be limited to, solid-state memories, optical and magnetic media, andcarrier wave signals, including optical and electromagnetic signals.

CONCLUSION

Thus, a method and a system to author pages, and an architecture, for awebsite have been described. Although the present invention has beendescribed with reference to specific example embodiments, it will beevident that various modifications and changes may be made to theseembodiments without departing from the broader spirit and scope of theinvention. Accordingly, the specification and drawings are to beregarded in an illustrative rather than a restrictive sense. Many otherembodiments will be apparent to those of skill in the art upon reviewingthe above description. Therefore, it is manifestly intended that thisinvention be limited only by the following claims and equivalentsthereof.

The Abstract is provided to comply with 37 C.F.R. §1.72(b) to allow thereader to quickly ascertain the nature and gist of the technicaldisclosure. The Abstract is submitted with the understanding that itwill not be used to interpret or limit the scope or meaning of theclaims.

1. A method for authoring an output page, the method comprising: readingpage markup language data; validating the page markup language dataaccording to a schema for the page markup language; and translating thepage markup language data to first output page markup language data. 2.The method of claim 1, further comprising: reading component markuplanguage data, said component markup language data defining a set of oneor more components; and validating at least one component reference inthe page markup language data.
 3. The method of claim 1, furthercomprising: reading string markup language data, the string markuplanguage data defining transforms for a set of text strings; andtranslating one or more strings in the page markup language dataaccording to the string markup language data.
 4. The method of claim 3,further comprising translating one or more strings in the componentmarkup language data according to the string markup language data. 5.The method of claim 1, further comprising: reading a library of pagemarkup language templates; and translating the first output page markuplanguage data to second output page markup language data using thelibrary of page markup language templates.
 6. The method of claim 5,further comprising: reading a set of dynamic content data; and insertingthe dynamic content data into an output page according to the secondpage markup language data.
 7. The method of claim 6, wherein the set ofdynamic content data is transformed into a format described by a set ofone or more result markup language files.
 8. The method of claim 1,wherein the page markup language conforms to an XML schema.
 9. A systemfor creating an output page, the system comprising: a markup languageeditor to receive page markup language data and to validate the pagemarkup language data according to a schema for the page markup language;and a markup language translator to receive the page markup languagedata and to translate the page markup language data to first outputmarkup language data.
 10. The system of claim 9, wherein the translatoris operable to: read component markup language data, said componentmarkup language data defining a set of one or more components; andvalidate at least one component reference in the page markup languagedata.
 11. The system of claim 9, further comprising: a localizationcomponent to read string markup language data, the string markuplanguage data defining internationalization transforms for a set of textstrings and to translate one or more strings in the page markup languagedata according to the string markup language data.
 12. The system ofclaim 11, wherein the localization component is operable to translateone or more strings in the component markup language data according tothe string markup language data.
 13. The system of claim 9, furthercomprising a first translator to read a library of page markup languagetransforms and translate the first output page markup language data tosecond output page markup language data using the library of page markuplanguage transforms.
 14. The system of claim 13, further comprising: asecond translator to read a set of dynamic content data and insert thedynamic content into an output page according to the second page markuplanguage data.
 15. The system of claim 14, wherein the output pagecomprise an HTML page.
 16. The system of claim 14, wherein the outputpage comprises an electronic mail message.
 17. The system of claim 14,wherein the set of dynamic content data is transformed into a formatdescribed by a set of one or more result markup language files.
 18. Thesystem of claim 9, wherein the schema comprises an XML schema.
 19. Thesystem of claim 10, wherein the component markup language conforms to anXML schema.
 20. The system of claim 11, wherein the string markuplanguage conforms to an XML schema.
 21. The system of claim 15, whereinthe results markup language schema comprises an XML schema.
 22. Amachine-readable medium having executable instructions for performing amethod for authoring an output page, the method comprising: reading pagemarkup language data; validating the page markup language data accordingto a schema for the page markup language; and translating the pagemarkup language data to first output page markup language data.
 23. Themachine-readable medium of claim 22, wherein the method furthercomprises: reading component markup language data, said component markuplanguage data defining a set of one or more components; and validatingat least one component reference in the page markup language data. 24.The machine-readable medium of claim 22, wherein the method furthercomprises: reading string markup language data, the string markuplanguage data defining transforms for a set of text strings; andtranslating one or more strings in the page markup language dataaccording to the string markup language data.
 25. The machine-readablemedium of claim 25, wherein the method further comprises translating oneor more strings in the component markup language data according to thestring markup language data.
 26. The machine-readable medium of claim22, wherein the method further comprises: reading a library of pagemarkup language templates; and translating the first output page markuplanguage data to second output page markup language data using thelibrary of page markup language templates.
 27. The machine-readablemedium of claim 26, wherein the method further comprises: reading a setof dynamic content data; and inserting the dynamic content into anoutput page according to the second page markup language data.
 28. Themachine-readable medium of claim 27, wherein the set of dynamic contentdata is transformed into a format described by a set of one or moreresult markup language files.
 29. The machine-readable medium of claim22, wherein the page markup language conforms to an XML schema.